\documentclass{article}
\usepackage[UTF8,scheme=plain]{ctex}
\usepackage{mathrsfs}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{dcolumn}
\usepackage{bm}
\usepackage{float} %let figure float to where you want
\usepackage{longtable}
\usepackage{amsmath}
\usepackage{color}
\usepackage{multirow}
\usepackage{rotating}
\usepackage{upgreek}
\usepackage{geometry}
\geometry{a4paper, left=2cm, right=2cm, top=2cm, bottom=2cm}
\usepackage{background}

\backgroundsetup{contents=Draft,color=gray,scale=7}
\setlength{\abovedisplayskip}{1ex} %设置公式上边间距
\setlength{\belowdisplayskip}{1ex} %设置公式下边间距
\title{计算物理讲义}
\author{路毅}
\begin{document}


\maketitle

\section{前言}

大量的问题

这门课所需的理论知识仅限于高等数学、线性代数、概率论，有少量物理问题（如蒙特卡洛方法中的 Ising 模型）涉及统计物理，但是（我相信）那些问题可以找到简单的方法引入。
所以这门课也非常适合本科生选修，我本科时正是在上海交大选修了张海燕老师\cite{HYZhang}的双语课《计算物理导论》。
{\bf 我建议系里将这门课对本科生开放，使之成为一门本科生、研究生同堂的课。}
如今计算物理已经渗入物理研究的方方面面，环顾四周，做理论的几乎没有不做些计算的，而做实验的往往也需要借助软件对数据进行处理。
一方面，对计算物理有一定了解，是物理学本科生的科学素养的一部分（我相信《计算物理导论》早已成为高校物理的常规选修课）；另一方面，我系本科生考研率很高，他们在研究生阶段很可能或多或少用到计算物理中的知识。
%有本科同学告诉我，如果开放给本科生，他们很可能不会选，因为考研不考这门课，但我仍然认为应该开放给本科生，给他们提供这个选项。
在我2017年春季辅导的《固体物理》学生中，就有一位很优秀的学生，打算前往南开大学从事凝聚态计算。

这门课最大的困难在于，学生的编程水平极其有限，大多数学生是 0 经验，所以我沿用了闫珂柱老师的安排，让学生用 Mathematica 编程，没有用更底层的编程语言。
虽然学生的培养计划中有 $C/C++$ 这一门课，但是至今为止，所有学生都告诉我，他们只是背了几个程序，成功过了这门课而已。
由于学生没有经验，课外可投入的时间也非常有限，所以我们花了很多时间熟悉 Mathematica 的语法，通过给一些小程序查错，来得到课程所需的编程能力。

我相信学生学到一些具体的算法，相信我的工作有意义。
学期末我打算设计一份调查问卷，尝试从学生的视角看待这门课相关的问题，以期得到对这件事更好的理解。
\fi

\section{泰勒展开}

哈哈哈呵呵哈哈哈哈哈哈

每当我们需要分析一个算法的误差、收敛性时，往往依赖泰勒展开，所以此处简述泰勒展开的思路，详情请参考文献\cite{Calculus1}。
\subsection{费马定理}

若 $f(x)$ 在点 $x_0$ 可导，在 $x_0$ 的一个领域有定义，且恒有 $f(x) \leq f(x_0)$（或 $f(x) \geq f(x_0)$），则 $f'(x_0)=0$。

\subsection{罗尔定理}

如果函数满足：（1）在闭区间 $\left[a,b\right]$ 上连续；（2）在开区间 $(a,b)$ 内可导；（3）$f(a)=f(b)$，则在 $(a,b)$ 内至少存在一点 $\epsilon$，使 $f'(\epsilon)=0$。

证明：$f(x)$ 在 $\left[a,b\right]$ 上连续，故必有最大值 $M$ 和最小值 $m$。

（1）若 $m=M$，即 $f(x)$ 在 $\left[a,b\right]$ 上为常数 $M$，$f'(x)$ 恒为零。

（2）若 $m<M$，由于 $f(a)=f(b)$，则两数 $m,M$ 中至少有一个不等于 $f(a)$。不失一般性，设 $M \not= f(a)$，则在 $(a,b)$ 内至少有一点 $\epsilon$，使得 $f(\epsilon)=M$。由费马定理，$f'(\epsilon)=0$。

\subsection{拉格朗日中值定理}

如果函数满足：

（1）在闭区间 $\left[a,b\right]$ 上连续；

（2）在开区间 $(a,b)$ 内可导，

则在 $(a,b)$ 内至少存在一点 $\epsilon$，使得 $f'(\epsilon) = \frac{ f(b) - f(a) }{ b-a}$， 或 $f(b) - f(a) = (b-a) f'(\epsilon)$。

证明：定义 $\varphi(x) = f(x) - \frac{ f(b) - f(a) }{b-a} x$, 
易得 $\varphi(a) = \frac{b}{b-a} f(a) - \frac{a}{b-a} f(b) = \varphi(b)$，
且 $\varphi(x)$ 在 $\left[a,b\right]$ 上连续，在 $\left[a,b\right]$ 上可导。
应用罗尔定理，必存在 $\epsilon \in (a,b)$，使得 $\varphi'(\epsilon)=0$，即 $f'(\epsilon) = \frac{ f(b)-f(a) }{b-a}$。

\subsection{柯西中值定理}

如果函数 $f(x)$ 与 $g(x)$ 满足

（1）在闭区间 $\left[a,b\right]$ 上连续；

（2）在开区间 $(a,b)$ 内可导且 $g'(x) \not= 0$。

则在 $(a,b)$ 内至少存在一点 $\epsilon$，使 $\frac{ f(b)-f(a) }{ g(b)-g(a) } = \frac{ f'(\epsilon)}{g'(\epsilon)}$。
由于 $g'(x) \not= 0$ 在 $(a,b)$ 内成立，必有$g(b) \not= g(a)$，
否则由罗尔定理，存在 $\epsilon$，使得 $g'(\epsilon)=0$。

定义 $\varphi(x) = f(x) - \frac{ f(b) - f(a) }{ g(b) - g(a) } g(x) $，
易证 $\varphi(a) = \frac{ g(b) }{ g(b) - g(a) } f(a) - \frac{ g(a) }{ g(b)-g(a) } f(b) = \varphi(b)$，且 $\varphi(x)$ 在 $\left[a,b\right]$ 上连续，在 $\left[a,b\right]$ 上可导。
应用罗尔定理可知，在 $(a,b)$ 内存在 $\epsilon$，使得 $\varphi'(\epsilon)=0$，即 $ \frac{ f(b)-f(a) }{ g(b)-g(a) } = \frac{ f'(\epsilon) }{ g'(\epsilon) }$。

\subsection{泰勒公式}

假设
\begin{eqnarray}
 R_n(x) \equiv f(x) - \left\{ f(x_0) + f'(x_0) (x-x_0) + \frac{ f''(x_0)}{2} (x-x_0)^2 + \cdots + \frac{ f^{(n)}(x_0)}{n!} (x-x_0)^n \right\},
\end{eqnarray}
则
\begin{eqnarray}
R_n (x_0) = R'_n (x_0) = \cdots = R^{(n)}_n (x_0) =0,
\end{eqnarray}
即
\begin{eqnarray}
\lim \limits_{x \rightarrow x_0 } \frac{ R_n (x) }{ (x-x_0)^n } =0.
\end{eqnarray}
应用柯西中值定理得到
\begin{eqnarray}
\frac{ R_n(x) }{ (x-x_0)^{n+1} } = \frac{ R_n(x) - R_n(x_0) }{ (x-x_0)^{n+1} -0} = \frac{ R'_n(c_1) }{ (n+1)(c_1 - x_0)^n}, ~~~c_1 \in (x_0,x).
\end{eqnarray}
类似地，做下去，得到
\begin{eqnarray}
\frac{ R_n(x) }{ (x-x_0)^{n+1} } = \frac{ R^{(n)}_n(c_n) }{ (n+1)! (c_n - x_0)} = \frac{ R^{(n+1)}_n (c_{n+1}) }{ (n+1)!} = \frac{ f^{(n+1)}(c_{n+1}) }{ (n+1)! },
\end{eqnarray}
其中 $c_{n+1} \in (x_0, x)$，即
\begin{eqnarray}
f(x) = f(x_0) + f'(x_0)(x-x_0) + \cdots + \frac{ f^{(n)}(x_0) }{ n! } (x-x_0)^n + \frac{ f^{(n+1)} (\epsilon) }{ (n+1)! } (x-x_0)^{n+1}, \cdots \epsilon \in (x_0, x).
\end{eqnarray}

\subsection{泰勒展开级数的收敛性}

若 $f(x)$ 在 $x_0$ 的领域内有无穷阶导数，$f(x)$ 可写作
\begin{eqnarray}
f(x) = f(x_0) + \sum\limits^\infty_{k=1} \frac{ f^{(k)}(x_0) }{k!} (x-x_0)^k.
\end{eqnarray}
截止到前 $n$ 项的和为
\begin{eqnarray}
S_n (x) = f(x_0) + \sum\limits^n_{k=1} \frac{ f^{(k)}(x_0) }{ k! } (x-x_0)^{k},
\end{eqnarray}
则余项和为
\begin{eqnarray}
R_n (x) = f(x) - S_n(x) = \frac{ f^{(n+1)} (\epsilon) }{ (n+1)! } (x-x_0)^{n+1}, ~~~~\epsilon \in (x_0, x).
\end{eqnarray}

如果在 $(x_0, x)$ 区间内， $f^{(0)}, f^{(1)}, f^{(2)}, \cdots, f^{(n)}, \cdots$ 均存在，则
\begin{eqnarray}
\lim \limits_{n\rightarrow \infty} R_n (x) = \lim\limits_{n\rightarrow \infty} \frac{ f^{(n+1)}(\epsilon) }{ (n+1)! } (x-x_0)^{n+1} =0,
\end{eqnarray}
即展开到无穷项的泰勒展开级数收敛。

\subsection{多元函数的泰勒展开}

记多元函数为 $f(\vec{x})$，其中 $\vec{x} = (x_1, x_2, x_3, \cdots, x_n)^\mathrm{T}$，它在 $\vec{a}=(a_1, a_2, a_3, \cdots, a_n)^\mathrm{T}$ 处的泰勒展开形式为
\begin{eqnarray}
f(\vec{x}) &=& f(\vec{a}) + \sum\limits^n_{i=1} f'_i (\vec{a}) (x_i - a_i) + \frac{1}{2!} \sum\limits^n_{i,j=1} f^{(2)}_{ij}(\vec{a}) (x_i - a_i)(x_j - a_j) \nonumber\\
						&&+ \cdots + \frac{1}{k!} \sum\limits^n_{i_1, i_2, \cdots, i_k=1} f^{(k)}_{i_1 i_2 \cdots i_k}(\vec{a}) (x_{i_1} - a_{i_1})(x_{i_2} - a_{i_2}) \cdots (x_{i_k} - a_{i_k}), 	 + \cdots
\label{multi-variable-taylor-series}
\end{eqnarray}
其中 $ f^{(n)}_{i_1 i_2 \cdots i_k}(\vec{x}_0) \equiv \frac{ \partial^n f(x) }{ \partial x_{i_1} \partial x_{i_2} \cdots \partial x_{i_k} } |_{\vec{a}}$。

\section*{致谢}
本讲义在\cite{HRMa}-\cite{KZYan}的基础上编写。
我只是结合自己的思路和教学实践中得到的反馈，整理了叙述线索，增添了少量定理证明过程。
曲师大2017级的研究生们给了我很多反馈，极大地启发和帮助了我的表达，一并感谢。

\begin{thebibliography}{99}
\bibitem{HRMa} 马红儒，上海交大，《计算物理讲义》，未出版。
\bibitem{HYZhang} 张海燕，《计算物理简明教程（英文版）》，上海交通大学出版社。
\bibitem{KZYan} 闫珂柱，计算物理ppt课件$\&$Mathematica示例文件，private communications.
\bibitem{Calculus1} 四川大学数学学院高等数学教研室，《高等数学》第一册，高等教育出版社。
\bibitem{LinearAlgebra} 李世栋，乐经良，冯卫国，王纪林，《线性代数》，科学出版社。
\bibitem{ProbabilityTheory} 孟晗，马军，王健，高建来，《概率论与数理统计》，同济大学出版社。
\bibitem{wiki} en.wikipedia.org
\bibitem{Calculus4} 四川大学数学学院高等数学教研室，《高等数学》第四册，高等教育出版社。
\bibitem{NumericalRecipes} William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery, ``{\it Numerical Recipes: The Art of Scientific Computing}'', 3rd Edition, Cambridge University Press.
\end{thebibliography}
\end{document}
